package com.itheima.a05objectsdemo01;

import java.util.Objects;

/***
 *@title ObjectsDemo01
 *@description <TODO description class purpose>
 *@author 12468
 *@version 1.0.0
 *@create 2024-11-28 0:19
 **/
public class ObjectsDemo01 {
    public static void main(String[] args) {
        Student s1 = null;
        Student s2 = new Student("张三", 18);

        // System.out.println(s1.equals(s2));  //  报错：java.lang.NullPointerException

        /**
         * Oject.equals() 细节：
         *  1、方法底层会判断 s1 是否为 null，如果为 null 直接返回 false
         *  2、如果 s1 不为 null，那么就利用 s1 再次调用 equals 方法
         *  3、此时 s1 是 Studen 类型，所以最终还是会调用 Students 中的 equals 方法
         *      如果没有重写，比较地址值，如果重写就比较属性值
         */
        boolean result = Objects.equals(s1, s2);
        System.out.println(result);


        System.out.println(Objects.isNull(s1)); // true
        System.out.println(Objects.isNull(s2)); // false

        System.out.println(Objects.nonNull(s1)); // false
        System.out.println(Objects.nonNull(s2)); // true

    }
}
